package javase基础;


import java.util.Date;

/**
 *
 */
public class Object对象 {
    //洗衣机类
    /*
    public String bread;//品牌
    public String type;//型号
    public double weight;//重量
    public double length;//长
    public double width;//宽
    public double height;//高
    public String color;//颜色
    public void washClothes(){//洗衣服
        System.out.println("洗衣功能");
    }
    public void dryClothes(){
        System.out.println("脱水功能");
    }
    public void setTime(){
        System.out.println("定时功能 ");
    }


 */

    /*
    //狗类

    public String name;//名字
    public String color;//颜色
    //狗的属性
    public void barks(){
        System.out.println(name + "汪汪汪");
    }
    //狗的行为
    public void wag(){
        System.out.println(name + "摇尾巴");
    }
*/

    /*
    //学生类
    public String name;
    public String gender;
    public short age;
    public double score;

    public void DoClass(){}
    public void DoHomework(){}
    public void Exam(){}

     */


    /*
    //this引用
    public int year;
    public int month;
    public int day;
    
    public void setDay(int y,int m,int d){
        year = y;
        month = m;
        day = d;
    }
    
    public void printDate(){
        System.out.println(year + "/" + month + "/" + day);
    }
    
    public static void main(String[] args){
        //构造三个日期类型的对象d1 d2 d3
        Object对象 d1 = new Object对象();
        Object对象 d2 = new Object对象();
        Object对象 d3 = new Object对象();
        //对d1 d2 d3的日期设置
        d1.setDay(2020,3,6);
        d2.setDay(2020,3,5);
        d3.setDay(2020,3,7);
        //打印日期中的内容
        d1.printDate();
        d2.printDate();
        d3.printDate();
    }
    */

    /*
    public int year;
    public int month;
    public int day;

    public void setDay(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public void printDate(){
        System.out.println(this.year + "/" + this.month + "/" + this.day);
    }

    public static void main(String[] args) {
        Object对象 d = new Object对象;
        d.setDay(2020,3,8);
        d.printDate();
    }*/

    /*
    public static class Main {
        public static void main(String[] args) {
            Object对象 dogh = new Object对象();//通过new实例化对象
            dogh.name = "阿黄";
            dogh.color = "黄黑";
            dogh.barks();
            dogh.wag();

            Object对象 dogs = new Object对象();
            dogs.name = "阿黄";
            dogs.color = "黄黑";
            dogs.barks();
            dogs.wag();
        }
     }
             */


    /*
    //在Java内部定义一个局部变量时，必须要初始化，否则会编译失败
    public static void main(String[] args) {
        int a;
        System.out.println(a);
        //编译失败
    }
    */

    /*
    //应该改为，在正式使用之前，给a设置一个初始值
    //如果是对象，则如下初始化
    public static void main(String[] args) {
        Object对象 d = new Object对象();
        d.printDate();
        d.setDay(2020,3,9);
        d.printDate();
    }

     */


    /**
     * 构造方法
     * 构造方法也称为构造器，是一个特殊的成员方法，名字必须与类名相同，在创建对象时，由编译器自动调用，在整个对象的生命周期只调用一次
     * 构造方法的作用就是对对象中的成员进行初始化，并不负责给对象开辟空间
     *
     */
    /*
    public int year;
    public int month;
    public int day;

    //构造方法
    //有参构造
    public Object对象(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public void printDate(){
        System.out.println(year + " " + month + " " + day);
    }

    public static void main(String[] args) {
        //此处创建了一个Object对象 类型的对象，并没有显式调用构造方法
        Object对象 d = new Object对象(2020,3,110);
        d.printDate();
    }

     */

            /*
    //构造方法可以重载
            //有参构造和无参构造是方法重载
    public int year;
    public int month;
    public int day;

    //无参构造
    public Object对象(){
        this.year = 2020;
        this.month = 3;
        this.day = 11;
    }

    //有参构造
    public Object对象(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public void printDate(){
        System.out.println(year + " " + month + " " +day);
    }

    public static void main(String[] args) {
        Object对象 d = new Object对象();
        d.printDate();
    }

             */


            /*
    //构造方法中，可以通过this调用其他构造方法来简化代码
    public int year;
    public int month;
    public int day;
    //无参构造方法是内部给各个成员赋值初始化，该部分功能与三个参数的构造方法重复
    //此处可以在无参构造方法中通过this调用带有三个参数的构造方法
    //但是this(2020,3,12)必须是构造方法中的第一条语句
    public Object对象(){
        this(2020,3,12);
        //相当于
        //this.year = 2020;
        //this.month = 3;
        //this.day = 12;
    }
    public Object对象(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }

             */
    /**
     * 注意：不能形成环
     */
    /*
    //如下，编译出错
    public Object对象(){
        this(2020,3,13);
    }
    public Object对象(int year,int month,int day){
        this();
    }

     */
            /*
    //为什么局部变量在使用时必须要初始化，而成员变量可以不用
    public int year;
    public int month;
    public int day;
    //成员变量在定义时，并没有给初始化，却可以使用
    public Object对象(int year,int month,int day){
        System.out.println(this.year);
        System.out.println(this.month);
        System.out.println(this.day);
    }

             */

    /*
    //就地初始化
    public int year = 2020;
    public int month = 3;
    public int day = 13;
    public Object对象(){

    }
    public Object对象(int year,int month,int day){

    }

    public static void main(String[] args) {
        Object对象 d1 = new Object对象(2020,3,15);
        Object对象 d2 = new Object对象();
    }

     */


}

